'use client'; import { useForm, SubmitHandler } from 'react-hook-form'; import { yupResolver } from '@hookform/resolvers/yup'; import * as yup from 'yup'; import clsx from 'clsx'; import { AccountChangeEmailFormType } from '@akinon/next/types'; import { Button, Input, Link } from '@theme/components'; import { ROUTES } from '@theme/routes'; import { useUpdateEmailMutation } from '@akinon/next/data/client/account'; import { useMemo, useState } from 'react'; import { useSearchParams, usePathname } from 'next/navigation'; import { useRouter, useLocalization } from '@akinon/next/hooks'; import { useGetProfileInfoQuery } from '@akinon/next/data/client/account'; import { Trans } from '@akinon/next/components/trans'; const accountChangeEmailSchema = (t) => yup.object().shape({ email: yup .string() .email(t('account.change_email.form.email.error')) .required(t('account.change_email.form.required')), emailConfirm: yup .string() .email(t('account.change_email.form.email.error')) .oneOf( [yup.ref('email')], t('account.change_email.form.email_confirm.error.not_same') ) .required(t('account.change_email.form.required')), password: yup.string().required(t('account.change_email.form.required')) }); export default function Page() { const { data: profileInfo } = useGetProfileInfoQuery(); const { t } = useLocalization(); const { register, handleSubmit, formState: { errors } } = useForm({ resolver: yupResolver(accountChangeEmailSchema(t)) }); const [formError, setFormError] = useState(null); const [updateEmail] = useUpdateEmailMutation(); const router = useRouter(); const searchParams = useSearchParams(); const pathname = usePathname(); const onSubmit: SubmitHandler = async (data) => { updateEmail(data) .unwrap() .then(() => { router.push(pathname + '?formSuccess=true'); }) .catch((error) => setFormError(error.data)); }; const LinkText = (props) => { return ( {props.title} ); }; const successParam = searchParams.get('formSuccess'); const isSuccess = useMemo(() => successParam === 'true', [successParam]); return (

{t('account.change_email.header.title')}

{' '} {t('account.change_email.header.subtitle')}

{isSuccess ? (

{t('account.change_email.form.success.title')}

{t('account.change_email.form.success.description')}

{t('account.change_email.form.success.button')}
) : (

{t('account.change_email.form.current_email')}

{profileInfo?.email}

{formError && (
{formError.non_field_errors}
)}
)}

{t('account.change_email.info.title')}

), Faq: ( ) }} />

); }